global {
    objective toLeft(A, B)
    objective sameHeight(A, B)
    objective sameX(A, B) 
    constraint sameSizeAs(A, B) 
}

Set s {
    shape = Ellipse { 
      text = Auto
    }

    -- constraint contains(s, s.shape.label)
    constraint outsideOf(s.shape.label, s)
    objective above(s, s.shape.label)
    objective sameX(s, s.shape.label)
}

Value f p q {
    shape = Arrow {
        start = p
        end   = q
        text = None
    }
}


Point p {
    shape = Dot { 
        text = None 
    }
}

In p s {
    constraint contains(s, p)
    objective sameX(p, s)
    objective sameHeight(p, s)
}

In p S, In q S {
    objective sameX(p, q)
    objective repel(p, q)
}
